package be.ipl.eBar.usecasesimpl;

import java.util.Calendar;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import be.ipl.eBar.dao.BiereDao;
import be.ipl.eBar.dao.CommandeDao;
import be.ipl.eBar.domaine.Biere;
import be.ipl.eBar.domaine.Commande;
import be.ipl.eBar.usecases.GestionCommandes;

@Stateless
public class GestionCommandesImpl implements GestionCommandes {

	@EJB
	CommandeDao cdao;
	@EJB
	BiereDao bdao;

	@Override
	public Commande enregistrerCommande(Commande commande) {
		return cdao.enregistrer(commande);
	}

	@Override
	public List<Commande> listerCommandes() {
		return cdao.lister();
	}

	@Override
	public void supprimerCommande(Commande commande) {
		cdao.supprimer(commande.getId());
	}

	@Override
	public Commande rechercherCommande(Calendar date) {
		return cdao.lister(date).get(0);
	}

	@Override
	public List<Commande> listerCommandes(Calendar date) {
		return cdao.lister(date);
	}

	@Override
	public Commande chargerTout(Commande commande) {
		return cdao.chargerBieres(commande);
	}

	@Override
	public Commande ajouterBiere(Commande commande, Biere biere, int quantite) {
		biere = bdao.recharger(biere.getId());
		commande = cdao.chargerBieres(commande);
		commande.addQuantite(biere, quantite);
		return commande;
	}

	@Override
	public Commande supprimerBiere(Commande commande, Biere biere, int quantite) {
		biere = bdao.recharger(biere.getId());
		commande = cdao.chargerBieres(commande);
		List<Biere> bieres = commande.getBieres();
		if (bieres.contains(biere)) {
			commande.addQuantite(biere, -quantite);
		}
		return commande;
	}

}
